Skip to content

feat: show time-to-next-pause in Device Tab print status#10819

Open
BenJule wants to merge 13 commits into
bambulab:masterfrom
BenJule:feat/time-to-next-pause
Open

feat: show time-to-next-pause in Device Tab print status#10819
BenJule wants to merge 13 commits into
bambulab:masterfrom
BenJule:feat/time-to-next-pause

Conversation

@BenJule
Copy link
Copy Markdown

@BenJule BenJule commented May 20, 2026

Summary

  • Adds a "Pause in Xh Ym" label to the printing task panel in the Device Tab
  • The label appears whenever a scheduled PausePrint exists ahead of the current layer and hides when no pause is pending
  • The estimated time is derived from the locally sliced gcode (layer Z-heights + custom gcode entries) and the printer's reported remaining time, updated on every status tick

Implementation

  • PrintingTaskPanel gains a new wxStaticText* m_staticText_next_pause widget placed between the layer counter and the progress-left label
  • update_next_pause(int seconds_to_pause) shows/hides and formats the label using the existing get_bbl_monitor_time_dhm() helper
  • In StatusPanel::update_subtask(), after the left-time update, the code reads GCodeViewer::get_layers_zs() and get_custom_gcode_per_print_z() from the preview canvas, finds the first PausePrint above the current layer's Z, and estimates the time proportionally from mc_left_time
  • Entire calculation is wrapped in try/catch so a missing slice result is silently ignored

Test plan

  • Load a model, add a layer-change pause via "Pause at layer" in the slicer, slice it, send to printer
  • While printing, open the Device Tab — "Pause in …" should appear next to the layer counter
  • After the pause layer is passed, label should disappear
  • Without any scheduled pause, label should never appear
  • Works when no project is sliced / preview canvas has no gcode loaded

Closes #10632
Closes #10562

@BenJule BenJule force-pushed the feat/time-to-next-pause branch from 1e6d3e5 to e07fd2c Compare May 21, 2026 08:31
BenJule added 13 commits May 21, 2026 10:52
The upstream build_all.yml only listed 'main' as a push trigger.
BenJule/BambuStudio uses 'master' as its default branch, so CI never
fired on fork-local pushes. Adding 'master' alongside 'main' makes
the full multi-platform build run when master is updated.
… locale files

The fila_manager web page was hardcoded in Chinese (lang="zh") with no
internationalization support. This commit adds a lightweight i18n system:

- Add locales/en.json and locales/zh_CN.json with all UI strings
- Add t(key) / tf(key, n) translation helpers loaded at startup
- Apply translations via data-i18n / data-i18n-placeholder attributes in HTML
- Replace all hardcoded Chinese strings in index.js with t() calls
- Language is resolved from the ?lang= URL parameter passed by C++
… strings

Two printer status strings shown during calibration used the misspelling
"percision" instead of "precision". Also fix lang="zh-CN" in
NozzleListTable.html (the table content is set by C++ at runtime).

All .po and .pot msgid entries updated to match the corrected source strings.
- 'Problem occured' → 'Problem occurred' (MediaPlayCtrl.cpp)
- 'When enable spiral vase mode' → 'When enabling ...' (SelectMachine.cpp, SyncAmsInfoDialog.cpp)
- 'connectors is out of object' → 'connectors are out of object' (GLGizmoAdvancedCut.cpp)
- 'Error:Detecting ...' → 'Error: Detecting ...' with spacing fixes (GLGizmoText.cpp)

Update all corresponding msgid entries in BambuStudio.pot and all 18 .po locale files.
Fix missing spaces after 'Warning:', 'Error:', and 'Tip:' prefixes,
missing spaces after sentence-ending periods and commas, and several
grammar issues in strings that appear to originate from machine
translation:

- GLGizmoText.cpp: fix 9 Warning: strings (space + grammar)
  - 'Warning:create text fail.' → 'Warning: Text creation failed.'
  - 'Warning:text normal is error.' → 'Warning: Text normal has an error.'
  - 'Warning:Due to font upgrades,previous...' → proper spacing
  - 'reedit it will ok' → 'reedit it to fix the issue'
  - 'dragging text' → 'drag the text' (imperative form)
- GLGizmoMeasure.cpp: fix 3 Warning: strings + 'two different mesh' → 'meshes'
- GLGizmoSVG.cpp: fix 'Tip:If...' + missing comma + 'svg file' → 'SVG file'
- PlaterWorker.hpp: 'error occured' → 'error occurred'
- DeviceManager.cpp: missing spaces after period/comma + '(PLA...)' spacing
- BindDialog.cpp: 'device.Before', 'termsand', 'Use(collectively)' spacing
- ConfigManipulation.cpp: missing spaces after comma and period
- AMSSetting.cpp: missing space after '1 minute.'
- Preferences.cpp: 'tab.If change value' → 'tab. If you change this value'

Update all msgid entries in BambuStudio.pot and all 18 .po locale files.
- AuxiliaryDialog.cpp: 'Auxiliaryies' → 'Auxiliaries' (dialog title)
- FanControl.cpp: 'print qulity' → 'print quality'
- GLGizmoFlatten.cpp: 'too small,The' → 'too small. The' (comma → period)
- Monitor.cpp: 'Assistant(HMS)' → 'Assistant (HMS)' (space before parenthesis)
- AMSSetting.cpp: 'during  printing' → 'during printing' (double space)
- AMSDryControl.cpp + uiAmsHumidityPopup.cpp: 'Left Time' → 'Remaining Time'
- Plater.cpp: 'attrited' → 'worn' (non-standard word)

Update all corresponding msgid entries in BambuStudio.pot and all 18 .po
locale files.
On macOS, BambuStudio already auto-follows the system dark/light theme
via EVT_SYS_COLOUR_CHANGED. On Windows this handler was guarded with
#ifndef __WINDOWS__, so theme changes were silently ignored.

Changes:
- GUI_Utils.hpp: EVT_SYS_COLOUR_CHANGED now fires on Windows when
  'dark_mode_follow_system' is enabled; calls update_dark_config() and
  on_sys_color_changed() to refresh the UI
- GUI_App.cpp dark_mode(): if follow-system is enabled, query
  check_dark_mode() (system appearance) instead of the stored config;
  on startup, sync dark_color_mode config from system if follow-system
  is enabled
- MainFrame.cpp on_sys_color_changed(): call force_colors_update() and
  update_ui_from_settings() on all platforms (previously skipped on
  Windows), so a system-triggered theme change gets a full UI refresh
- Preferences.hpp/.cpp: add 'Follow system theme' checkbox below the
  manual 'Enable dark mode' toggle; when checked the manual toggle is
  disabled and the current system state is applied immediately

Resolves feature request bambulab#10800.
- F1–F4 switch between the four main tabs (3D Editor, Preview, Monitor,
  Project); F5 triggers reslice when a model is loaded
- ColorPickerPopup gains a hex input field (#RRGGBB) below the custom
  color swatch; typing a valid 6-digit hex and pressing Enter applies
  the color and fires EVT_SELECTED_COLOR; clicking any swatch updates
  the hex field to match the selected color
- update_title() now sets the topbar label to "Bambu Studio <version>"
  on Windows/Linux so the version is always visible without opening
  the About dialog (closes bambulab#10642)
- Preferences > Online Models gains a "Open full MakerWorld site"
  checkbox (config key makerworld_use_full_site); when enabled the
  Online Models tab loads the unrestricted makerworld.com pages
  instead of the /studio/webview simplified view, restoring access to
  comments, account management, and other features (closes bambulab#10801)
- update_title() now shows the open project filename and a leading '*'
  when there are unsaved changes, keeping the topbar in sync via the
  existing wxEVT_IDLE handler; title reverts to the app name + version
  when no project is open (closes bambulab#9987, closes bambulab#9989)
- Cloud connection failure dialog now uses RichMessageDialog with a
  "Don't show this warning again" checkbox; checking it sets config key
  suppress_cloud_warnings=1 so the dialog is permanently suppressed
  for offline/LAN-only workflows (closes bambulab#10589)
- Preferences > General Settings: "Auto-save project every 5 minutes"
  checkbox (config key autosave_enabled); a wxTimer in MainFrame fires
  every 5 min and calls save_project() silently when the project has a
  filename, is dirty, and the option is enabled (closes bambulab#10334)
- Alt+Arrow moves selected objects by 0.1 mm; Alt+Shift+Arrow by
  0.01 mm; existing Shift+Arrow (1 mm) and plain Arrow (10 mm) are
  unchanged; added to the keyboard shortcuts dialog (closes bambulab#10194)
- LayerRangeEditor now explicitly sets background/foreground to the
  app's dark-mode palette colours after UpdateDarkUI(), fixing the
  unreadable contrast in the Height Range Modifier field on Linux dark
  mode (closes bambulab#10685)
Adds a "Pause in Xh Ym" label below the layer counter in the printing
task panel whenever a scheduled PausePrint exists ahead of the current
layer. The countdown is derived from the locally sliced gcode (layer
Z-heights + custom gcode entries) and the printer's reported remaining
time, updated on every status tick.

Closes bambulab#10632
Closes bambulab#10562
@BenJule BenJule force-pushed the feat/time-to-next-pause branch from e07fd2c to 0b181c8 Compare May 21, 2026 08:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant